const arr = [10, 20, 30, 40];

/* 将arr压缩为一个元素 */
function demo1() {
  const reducedValue = arr.reduce(
    /* 
        index 当前元素下标
        pv 先前步骤处理的结果 
        cv 当前元素
        */
    /* 
       index=1:pv=arr[0],cv=arr[1],返回一个值作为下一次的pv
       index=2:pv=上一次的返回值,cv=arr[2],返回一个值作为下一次的pv
       index=3:pv=上一次的返回值,cv=arr[2]，返回值作为最终结果
       */
    (pv, cv, index) => {
      console.log("index/pv/cv", index, pv, cv);
      return pv + cv;
    }
  );
  console.log("压缩（reduce）后的最终结果", reducedValue);
}
// demo1();

/* 给一个初始值 */
function demo2() {
    /*     
    index/pv/cv 0 1000 10
    index/pv/cv 1 1010 20
    index/pv/cv 2 1030 30
    index/pv/cv 3 1060 40
    */
  const reducedValue = arr.reduce(
    /* 批处理器函数 */
    (pv, cv, index) => {
      console.log("index/pv/cv", index, pv, cv);
      return pv + cv;
    },

    //初始值
    1000
  );
  console.log("压缩（reduce）后的最终结果", reducedValue);
}
demo2();
